home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / TURB_VIS / TCYBER25 / CYEDIT.ZIP / CEDLGS.PAS < prev    next >
Pascal/Delphi Source File  |  1994-10-20  |  10KB  |  90 lines

  1. {
  2. Turbo Vision CyberTools 2.5
  3. (C) 1994 Steve Goldsmith
  4. All Rights Reserved
  5. }
  6.  
  7. UNIT CEDLGS ;{$I APP.INC} INTERFACE USES DOS , OBJECTS , APP , VIEWS , DIALOGS , DRIVERS , VALIDATE , MSGBOX , VGA ,
  8. TVSTR , COMMDLGS , CECMDS ;TYPE PCHRSETEDITVIEW =^TCHRSETEDITVIEW ;TCHRSETEDITVIEW =OBJECT (TVIEW)CHRVAL :LONGINT ;
  9. PROCEDURE DRAW ;VIRTUAL;PROCEDURE HANDLEEVENT (VAR EVENT :TEVENT );VIRTUAL;END ;PCHRSETEDITDLG =^TCHRSETEDITDLG ;
  10. TCHRSETEDITDLG =OBJECT (TDIALOG)PASTECHR :INTEGER ;CHRSTATUS :PINPUTLINE ;CHRVIEW :PCHRSETEDITVIEW ;CONSTRUCTOR INIT
  11. (NAME :PATHSTR );PROCEDURE HANDLEEVENT (VAR EVENT :TEVENT );VIRTUAL;FUNCTION GETPALETTE :PPALETTE ;VIRTUAL;END ;
  12. PCHREDITVIEW =^TCHREDITVIEW ;TCHREDITVIEW =OBJECT (TVIEW)FONTARRAY :ARRAY [ 0 .. 15 ]  OF BYTE ;PROCEDURE DRAW ;VIRTUAL;
  13. PROCEDURE HANDLEEVENT (VAR EVENT :TEVENT );VIRTUAL;END ;PCHREDITDLG =^TCHREDITDLG ;TCHREDITDLG =OBJECT (TDIALOG)CHRVAL ,
  14. FONTTABLE :INTEGER ;CHREDITOR :PCHREDITVIEW ;CONSTRUCTOR INIT (C ,F:INTEGER );PROCEDURE SIZELIMITS
  15. (VAR MIN ,MAX:TPOINT );VIRTUAL;END ;PICONVIEW =^TICONVIEW ;TICONVIEW =OBJECT (TVIEW)STARTCHR , ICONLEN :INTEGER ;
  16. APPCOMMAND :WORD ;CONSTRUCTOR INIT (X ,Y,STCHR,ILEN:INTEGER );PROCEDURE DRAW ;VIRTUAL;PROCEDURE HANDLEEVENT
  17. (VAR EVENT :TEVENT );VIRTUAL;PROCEDURE SETSTATE (ASTATE :WORD ;ENABLE :BOOLEAN );VIRTUAL;END ;
  18. PTOOLBARDLG =^TTOOLBARDLG ;TTOOLBARDLG =OBJECT (TDIALOG)CONSTRUCTOR INIT (STCHR ,ILEN,ICONS:INTEGER ;STARTCMD :WORD );
  19. PROCEDURE SIZELIMITS (VAR MIN ,MAX:TPOINT );VIRTUAL;END ;
  20. IMPLEMENTATION PROCEDURE TCHRSETEDITVIEW.DRAW ;VAR OI1OllllOl1:TDRAWBUFFER;OOIO,OOIl:INTEGER;OOllOI000O1l:WORD;
  21. BEGIN OOllOI000O1l := GETCOLOR (33 );FOR OOIl := 0 TO SIZE.Y - 1  DO BEGIN FOR OOIO := 0 TO SIZE.X - 1  DO OI1OllllOl1 [
  22. OOIO ] := (OOIl * SIZE.X + OOIO )OR (OOllOI000O1l SHL 8 );WRITEBUF (0 , OOIl , SIZE.X , 1 , OI1OllllOl1 );END ;
  23. SHOWCURSOR END ;PROCEDURE TCHRSETEDITVIEW.HANDLEEVENT (VAR EVENT:TEVENT);VAR O10OIIIIO0l11:TPOINT;
  24. BEGIN INHERITED HANDLEEVENT(EVENT );IF EVENT.WHAT =EVMOUSEDOWN THEN BEGIN REPEAT IF MOUSEINVIEW (EVENT.WHERE )THEN
  25. BEGIN MAKELOCAL (EVENT.WHERE , O10OIIIIO0l11 );SETCURSOR (O10OIIIIO0l11.X , O10OIIIIO0l11.Y );CHRVAL := CURSOR.X + 32 *
  26. CURSOR.Y ;MESSAGE (OWNER , EVBROADCAST , CMCHARSELECTED , @ SELF )END UNTIL NOT MOUSEEVENT (EVENT , EVMOUSEMOVE );IF
  27. EVENT.DOUBLE THEN MESSAGE (APPLICATION , EVBROADCAST , CMCHAREDIT , OWNER );CLEAREVENT (EVENT )END ELSE IF EVENT.WHAT
  28. =EVKEYDOWN THEN WITH CURSOR DO BEGIN CASE EVENT.KEYCODE  OF KBHOME :SETCURSOR (0 , Y );KBEND :SETCURSOR (SIZE.X - 1 , Y
  29. );KBUP :IF Y > 0 THEN SETCURSOR (X , Y - 1 );KBDOWN :IF Y < SIZE.Y - 1 THEN SETCURSOR (X , Y + 1 );KBLEFT :IF X > 0 THEN
  30. SETCURSOR (X - 1 , Y );KBRIGHT :BEGIN IF X < SIZE.X - 1 THEN SETCURSOR (X + 1 , Y )END ELSE EXIT END ;CHRVAL := CURSOR.X
  31. + 32 * CURSOR.Y ;MESSAGE (OWNER , EVBROADCAST , CMCHARSELECTED , @ SELF );CLEAREVENT (EVENT )END END ;
  32. CONSTRUCTOR TCHRSETEDITDLG.INIT (NAME:PATHSTR);VAR OO1I:TRECT;BEGIN DESKTOP ^. GETEXTENT (OO1I );OO1I.A.X := OO1I.B.X -
  33. 39 ;OO1I.B.X := OO1I.A.X + 36 ;OO1I.A.Y := OO1I.A.Y + 1 ;OO1I.B.Y := OO1I.A.Y + 14 ;INHERITED INIT(OO1I , NAME );OPTIONS
  34. := OPTIONS OR OFFIRSTCLICK ;OO1I.ASSIGN (2 , 2 , 34 , 10 );CHRVIEW := NEW (PCHRSETEDITVIEW , INIT (OO1I ));CHRVIEW ^.
  35. OPTIONS := CHRVIEW ^. OPTIONS OR OFSELECTABLE ;CHRVIEW ^. BLOCKCURSOR ;INSERT (CHRVIEW );OO1I.ASSIGN (7 , 11 , 29 , 12 );
  36. CHRSTATUS := NEW (PINPUTLINE , INIT (OO1I , 32 ));CHRSTATUS ^. OPTIONS := CHRSTATUS ^. OPTIONS AND NOT OFSELECTABLE ;
  37. INSERT (CHRSTATUS )END ;PROCEDURE TCHRSETEDITDLG.HANDLEEVENT (VAR EVENT:TEVENT);VAR OOO0IlO0OI1O:STRING ;BEGIN IF
  38. EVENT.WHAT =EVKEYDOWN THEN IF EVENT.CHARCODE =#32THEN MESSAGE (APPLICATION , EVBROADCAST , CMCHARINVERT , @ SELF )ELSE
  39. CASE EVENT.KEYCODE  OF KBENTER :MESSAGE (APPLICATION , EVBROADCAST , CMCHAREDIT , @ SELF );KBDEL :MESSAGE (APPLICATION ,
  40. EVBROADCAST , CMCHARDELETE , @ SELF );KBCTRLLEFT :MESSAGE (APPLICATION , EVBROADCAST , CMCHARLEFT , @ SELF );KBCTRLRIGHT
  41. :MESSAGE (APPLICATION , EVBROADCAST , CMCHARRIGHT , @ SELF );KBCTRLPGUP :MESSAGE (APPLICATION , EVBROADCAST , CMCHARUP ,
  42. @ SELF );KBCTRLPGDN :MESSAGE (APPLICATION , EVBROADCAST , CMCHARDOWN , @ SELF );KBSHIFTINS :MESSAGE (APPLICATION ,
  43. EVBROADCAST , CMCHARPASTE , @ SELF );KBCTRLINS :BEGIN PASTECHR := CHRVIEW ^. CHRVAL ;FORMATSTR (OOO0IlO0OI1O ,
  44. 'Paste char = %0#%3d', CHRVIEW ^. CHRVAL );CHRSTATUS ^. SETDATA (OOO0IlO0OI1O )END END ;INHERITED HANDLEEVENT(EVENT );IF
  45. (EVENT.WHAT =EVBROADCAST )AND (EVENT.COMMAND =CMCHARSELECTED )THEN BEGIN FORMATSTR (OOO0IlO0OI1O ,
  46. 'Dec │%0#%3d│   Hex │%0#%02x│', CHRVIEW ^. CHRVAL );CHRSTATUS ^. SETDATA (OOO0IlO0OI1O )END ;END ;
  47. FUNCTION TCHRSETEDITDLG.GETPALETTE :PPALETTE ;CONST OOlOIOI1Oll1=CBLUEDIALOG+ CCHARPAL;O10O1I10lIIO0=CCYANDIALOG+
  48. CCHARPAL;OIO1IO1ll10=CGRAYDIALOG+ CCHARPAL;OO10:ARRAY [ DPBLUEDIALOG.. DPGRAYDIALOG]  OF STRING [ LENGTH(OOlOIOI1Oll1)]
  49. =(OOlOIOI1Oll1, O10O1I10lIIO0, OIO1IO1ll10);BEGIN GETPALETTE := @ OO10 [ PALETTE ] END ;PROCEDURE TCHREDITVIEW.DRAW ;
  50. VAR OI1OllllOl1:TDRAWBUFFER;OOIO,OOIl:INTEGER;OOllOI000O1l:WORD;BEGIN OOllOI000O1l := GETCOLOR (2 );FOR OOIl := 0 TO
  51. SIZE.Y - 1  DO BEGIN FOR OOIO := 0 TO 7  DO IF FONTARRAY [ OOIl ] AND VGABITTABLE [ OOIO ] =0 THEN OI1OllllOl1 [ OOIO ]
  52. := 249 OR (OOllOI000O1l SHL 8 )ELSE OI1OllllOl1 [ OOIO ] := 178 OR (OOllOI000O1l SHL 8 );WRITEBUF (0 , OOIl , 8 , 1 ,
  53. OI1OllllOl1 );END ;SHOWCURSOR END ;PROCEDURE TCHREDITVIEW.HANDLEEVENT (VAR EVENT:TEVENT);VAR O10OIIIIO0l11:TPOINT;
  54. BEGIN INHERITED HANDLEEVENT(EVENT );IF EVENT.WHAT =EVMOUSEDOWN THEN BEGIN REPEAT IF MOUSEINVIEW (EVENT.WHERE )THEN
  55. BEGIN MAKELOCAL (EVENT.WHERE , O10OIIIIO0l11 );SETCURSOR (O10OIIIIO0l11.X , O10OIIIIO0l11.Y );IF EVENT.BUTTONS AND
  56. MBRIGHTBUTTON =0 THEN FONTARRAY [ CURSOR.Y ] := FONTARRAY [ CURSOR.Y ] OR VGABITTABLE [ CURSOR.X ] ELSE FONTARRAY [
  57. CURSOR.Y ] := FONTARRAY [ CURSOR.Y ] AND NOT VGABITTABLE [ CURSOR.X ] ;PCHREDITDLG (OWNER )^. LOCK ;DRAWVIEW ;
  58. PCHREDITDLG (OWNER )^. UNLOCK ;MESSAGE (APPLICATION , EVBROADCAST , CMCHARCHANGED , OWNER )END UNTIL NOT MOUSEEVENT
  59. (EVENT , EVMOUSEMOVE );CLEAREVENT (EVENT )END ELSE IF EVENT.WHAT =EVKEYDOWN THEN WITH CURSOR DO BEGIN IF EVENT.CHARCODE
  60. =#32THEN BEGIN FONTARRAY [ Y ] := FONTARRAY [ Y ] XOR VGABITTABLE [ X ] ;PCHREDITDLG (OWNER )^. LOCK ;DRAWVIEW ;
  61. PCHREDITDLG (OWNER )^. UNLOCK ;MESSAGE (APPLICATION , EVBROADCAST , CMCHARCHANGED , OWNER )END ELSE CASE EVENT.KEYCODE
  62.  OF KBENTER :MESSAGE (APPLICATION , EVBROADCAST , CMCHARCHANGED , OWNER );KBHOME :SETCURSOR (0 , Y );KBEND :SETCURSOR
  63. (SIZE.X - 1 , Y );KBUP :IF Y > 0 THEN SETCURSOR (X , Y - 1 );KBDOWN :IF Y < SIZE.Y - 1 THEN SETCURSOR (X , Y + 1 );
  64. KBLEFT :IF X > 0 THEN SETCURSOR (X - 1 , Y );KBRIGHT :IF X < SIZE.X - 1 THEN SETCURSOR (X + 1 , Y )END ;CLEAREVENT (EVENT
  65. )END END ;CONSTRUCTOR TCHREDITDLG.INIT (C,F:INTEGER);VAR O1lI110111ll:STRING ;OO1I:TRECT;O100llI0I11O1:PINPUTLINE;
  66. BEGIN OO1I.ASSIGN (9 , 1 , 19 , 20 );INHERITED INIT(OO1I , '');OPTIONS := OPTIONS OR OFFIRSTCLICK ;CHRVAL := C ;
  67. FONTTABLE := F ;OO1I.ASSIGN (1 , 1 , 9 , 2 );O100llI0I11O1 := NEW (PINPUTLINE , INIT (OO1I , 8 ));O100llI0I11O1 ^.
  68. OPTIONS := O100llI0I11O1 ^. OPTIONS AND NOT OFSELECTABLE ;O1lI110111ll := INTTOSTR (F )+ ':'+ INTTOSTR (C );
  69. O100llI0I11O1 ^. SETDATA (O1lI110111ll );INSERT (O100llI0I11O1 );OO1I.ASSIGN (1 , 2 , 9 , 18 );CHREDITOR := NEW
  70. (PCHREDITVIEW , INIT (OO1I ));CHREDITOR ^. OPTIONS := CHREDITOR ^. OPTIONS OR OFSELECTABLE ;CHREDITOR ^. BLOCKCURSOR ;
  71. INSERT (CHREDITOR )END ;PROCEDURE TCHREDITDLG.SIZELIMITS (VAR MIN,MAX:TPOINT);BEGIN INHERITED SIZELIMITS(MIN , MAX );
  72. MIN.X := 10 END ;CONSTRUCTOR TICONVIEW.INIT (X,Y,STCHR,ILEN:INTEGER);VAR OO1I:TRECT;BEGIN OO1I.ASSIGN (X , Y , X + ILEN ,
  73. Y + 1 );INHERITED INIT(OO1I );OPTIONS := OPTIONS OR (OFSELECTABLE + OFFIRSTCLICK );EVENTMASK := EVENTMASK OR EVBROADCAST
  74. ;STARTCHR := STCHR ;ICONLEN := ILEN END ;PROCEDURE TICONVIEW.DRAW ;VAR OI1OllllOl1:TDRAWBUFFER;OOllOI000O1l:WORD;
  75. OOIO:BYTE;BEGIN IF STATE AND SFDISABLED <> 0 THEN OOllOI000O1l := GETCOLOR (1 )ELSE IF STATE AND SFFOCUSED =0 THEN
  76. OOllOI000O1l := GETCOLOR (2 )ELSE OOllOI000O1l := GETCOLOR (8 );FOR OOIO := 0 TO SIZE.X - 1  DO OI1OllllOl1 [ OOIO ] :=
  77. (STARTCHR + OOIO )OR (OOllOI000O1l SHL 8 );WRITELINE (0 , 0 , SIZE.X , 1 , OI1OllllOl1 )END ;
  78. PROCEDURE TICONVIEW.HANDLEEVENT (VAR EVENT:TEVENT);BEGIN INHERITED HANDLEEVENT(EVENT );CASE EVENT.WHAT  OF EVBROADCAST
  79. :IF EVENT.COMMAND =CMCOMMANDSETCHANGED THEN BEGIN SETSTATE (SFDISABLED , NOT COMMANDENABLED (APPCOMMAND ));DRAWVIEW END ;
  80. EVMOUSEDOWN :BEGIN MESSAGE (APPLICATION , EVCOMMAND , APPCOMMAND , @ SELF );CLEAREVENT (EVENT )END ;EVKEYDOWN :IF
  81. EVENT.KEYCODE =KBENTER THEN BEGIN MESSAGE (APPLICATION , EVCOMMAND , APPCOMMAND , @ SELF );CLEAREVENT (EVENT )END END END
  82. ;PROCEDURE TICONVIEW.SETSTATE (ASTATE:WORD;ENABLE:BOOLEAN);BEGIN INHERITED SETSTATE(ASTATE , ENABLE );IF ASTATE
  83. =SFFOCUSED THEN DRAWVIEW END ;CONSTRUCTOR TTOOLBARDLG.INIT (STCHR,ILEN,ICONS:INTEGER;STARTCMD:WORD);VAR OIlO:INTEGER;
  84. OO1I:TRECT;OOllO111O0ll:PICONVIEW;BEGIN OO1I.ASSIGN (1 , 1 , 8 , ICONS * 2 + 2 );INHERITED INIT(OO1I , '');OPTIONS :=
  85. OPTIONS OR OFFIRSTCLICK ;STATE := STATE AND NOT SFSHADOW ;FLAGS := FLAGS AND NOT WFCLOSE ;FOR OIlO := 0 TO ICONS - 1
  86.  DO BEGIN OOllO111O0ll := NEW (PICONVIEW , INIT (2 , OIlO * 2 + 1 , OIlO * ILEN + STCHR , ILEN ));OOllO111O0ll ^.
  87. APPCOMMAND := STARTCMD + OIlO ;INSERT (OOllO111O0ll )END ;FOR OIlO := 1 TO ICONS - 1  DO BEGIN OO1I.ASSIGN (1 , OIlO * 2
  88. , SIZE.X - 1 , OIlO * 2 + 1 );INSERT (NEW (PSTATICTEXT , INIT (OO1I , FILLSTR ('─', ILEN + 2 ))))END ;SELECTNEXT (FALSE
  89. )END ;PROCEDURE TTOOLBARDLG.SIZELIMITS (VAR MIN,MAX:TPOINT);BEGIN INHERITED SIZELIMITS(MIN , MAX );MIN.X := 7 END ;END .
  90.